import Contas.Administrador 
import Contas.Permissao 
import Contas.Telefone 
import Contas.TipoAdministrador 
import Contas.TipoUsuario
import Biblioteca.TipoRelatorioTecnico

class BootStrap {

	def authenticateService
	
    def init = { servletContext ->
		
		def roleAdmin = new Permissao(authority:'ROLE_ADMIN', description:'Administradores do sistema')
		def roleUser  = new Permissao(authority:'ROLE_USUARIO', description:'Usuarios do sistema')
		
		def phone = new Telefone(ddd: '83', telefoneParte1 : '3335', telefoneParte2 : '5448')
		phone.save()
		
		def userGod = new Administrador(
			username:'administrador',
			userRealName :'Administrador do sistema',
			enabled : true,
			telefoneId : phone.id,
			email : 'spl.suport@gmail.com',
			tipo: 'Suporte',
			passwd : authenticateService.encodePassword('administrador'))
		
		userGod.save()
		
		roleAdmin.addToPeople(userGod)
		model: [authorityList: Permissao.list(), administradorInstance: userGod]

				
		roleAdmin.save()
		roleUser.save() 
		
    
	
	def tipoProfessor = new TipoAdministrador (tipo: "Professor");
	def tipoSuporte = new TipoAdministrador (tipo: "Suporte");
	def tipoNovoAdmin = new TipoAdministrador (tipo: "Novo Tipo");
	def tipoIC = new TipoUsuario (tipo: "Iniciacao Cientifica");
	def tipoMestrado = new TipoUsuario (tipo: "Mestrado");
	def tipoDoutorado = new TipoUsuario (tipo: "Doutorado");
    def tipoPesquisador = new TipoUsuario (tipo: "Pesquisador");
    def tipoDoutoradoSanduiche = new TipoUsuario (tipo: "Doutorado Sanduiche");

    def tipoTeseDoutorado = new TipoRelatorioTecnico (tipo: "Tese de Doutorado");
    def tipoDissertacaoMestrado = new TipoRelatorioTecnico (tipo: "Dissertacao de Mestrado");
    def tipoRelatorioIC = new TipoRelatorioTecnico (tipo: "Relatorio de IC");
	
	tipoProfessor.save();
	tipoSuporte.save();
	
	
	tipoIC.save();
	tipoMestrado.save();
	tipoDoutorado.save();
    tipoPesquisador.save();
    tipoDoutoradoSanduiche.save();
	

    tipoTeseDoutorado.save();
    tipoDissertacaoMestrado.save();
    tipoRelatorioIC.save();
         

	}
	
    def destroy = {
    }
}
